我正在尝试使用我的2Druby数组解决一些问题,当我进行数组切片时,我的LOC减少了很多。例如,require"test/unit"classLibraryTest我想知道是否有办法得到对角切片?假设我想从[0,0]开始并想要一个3的对角线切片。然后我会从[0,0]、[1,1]、[2,2]获取元素,我会得到一个数组[1,4,7]上面的例子。是否有任何神奇的单行ruby代码可以实现这一目标?3.次做{一些神奇的东西?} 最佳答案 puts(0..2).collect{|i|array[i][i]}
如果array=[1,2,3,4,5,6,7,8,9],我想从数组中删除一系列元素。例如:我想从该数组中删除索引在2..5范围内的所有元素,结果应该是[1,2,7,8,9]提前致谢。 最佳答案 使用slice!:Deletestheelement(s)givenby[...]arange.array=[1,2,3,4,5,6,7,8,9]array.slice!(2..5)array#=>[1,2,7,8,9] 关于ruby-如何从数组中删除一系列值?,我们在StackOverflow上
总结:这里的基本问题是,我发现,您是否可以将代码块传递给Ruby数组,这实际上会将该数组的内容减少到另一个数组,而不是单个值(inject的方式)。最简洁的答案是不”。我接受这样的回答。感谢Squeegy提供了一个很好的循环策略来从数组中去除条纹。挑战:在不显式循环遍历数组的情况下减少数组的元素。输入:所有从-10到10(0除外)的整数随机排列。TheDesiredOutput:一个表示正数或负数条纹的数组。例如,-3表示三个连续的负数。2代表两个连续的正数。示例脚本:original_array=(-10..10).to_a.sort{rand(3)-1}original_array
我正在读取一个大小为10mb且包含一些ID的文件。我将它们读入ruby列表。我担心将来可能会导致内存问题,因为文件中的id数量可能会增加。有没有一种批量读取大文件的有效方法?谢谢 最佳答案 与LazyEnumerators和each_slice,您可以两全其美。中间切线不用担心,可以批量迭代多行。batch_size可以自由选择。header_lines=1batch_size=2000File.open("big_file")do|file|file.lazy.drop(header_lines).each_slice(batch
生成具有固定距离的值的数组的简单方法是什么?例如:1,4,7,10,...etc我需要能够设置开始、结束和步距。 最佳答案 尝试使用Range.step:>(1..19).step(3).to_a=>[1,4,7,10,13,16,19] 关于ruby-创建具有均匀间隔值的数组,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4838381/
这是我现在所拥有的,它有点管用:defpadding(a,b,c=nil)untila[b-1]a这是它起作用的时候:a=[1,2,3]padding(a,10,"YES")=>[1,2,3,"YES","YES","YES","YES","YES","YES","YES"]a[1,2,3]padding(a,10,1)=>[1,2,3,1,1,1,1,1,1,1]但是当我没有为“c”输入值时它崩溃了a=[1,2,3]padding(a,10)Killed我应该如何附加它以避免崩溃?此外,您建议如何更改此方法以按如下方式使用它:[1,2,3].padding(10)=>[1,2,3,n
最好的方法是:我有两个数组:a=[['a','one'],['b','two'],['c','three'],['d','four']]和b=['two','three']我想删除a中包含b中的元素的嵌套数组,得到这个:[['a','one']['d','four']谢谢。 最佳答案 a=[['a','one'],['b','two'],['c','three'],['d','four']]b=['two','three']a.delete_if{|x|b.include?(x.last)}pa#=>[["a","one"],["d
如何使用数组中的键初始化散列,如下所示?keys=['a','b','c']所需的哈希h应该是:putsh#{'a'=>nil,'b'=>nil,'c'=>nil} 最佳答案 这里我们使用Enumerable#each_with_object和Hash::[].keys=['a','b','c']Hash[keys.each_with_object(nil).to_a]#=>{"a"=>nil,"b"=>nil,"c"=>nil}或使用Array#productkeys=['a','b','c']Hash[keys.product(
在我的应用程序中,我有一个名为@apps的数组,它由ActiveRecord加载,其中包含包含应用程序名称、环境等的记录。我目前正在使用@apps.count获取数组中的应用程序数量,但我无法计算数组中environment=0.我尝试了@apps.count(0)但没有成功,因为每条记录都有多个字段。我也试过类似@apps.count{|environment|environment=0}但什么也没发生。有什么建议吗? 最佳答案 只需使用select来缩小您想要的范围:@apps.select{|a|a.environment==
我试过按照这个answer让gem工作,但它不会。我设置了我的项目,这样各个项目都有自己的gem,而不是生活在全局空间中的所有主题gem,然后我使用binstubs来允许我做bin/rails.因此,每个项目的所有gem都安装到.bundle/gems/。总是给我带来最棘手问题的是posgresql。让我们完成这些步骤。所以我跑:bundle它爆炸说:Gem::Installer::ExtensionBuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Ver